import axios, { AxiosRequestConfig } from 'axios'

// 配置全局api接口域名
const baseURL = import.meta.env.VITE_APP_BASE_API as string

// 响应的通用类型
export interface ResponseType<T = any> {
  // 响应的状态码
  code: number
  // 响应的提示信息
  message: string
  // 响应的json内容
  data: T
}

// 创建axios实例
const request = axios.create({
  baseURL: baseURL, //赋值公共域名
  timeout: 5000, // 设置延迟时间 超时时间为5s
})

// 拦截request的发送请求和响应
request.interceptors.request.use(
  // 拦截发送请求,在请求头加上token
  (config: AxiosRequestConfig) => {
    const token: string | null = localStorage.getItem('item')
    if (token) {
      // @ts-ignore
      config.headers.token = token
    }
    return config
  },
  (err) => {
    Promise.reject(err)
  }
)

request.interceptors.response.use(
  // 拦截响应请求
  (res) => {
    return res.data
  },
  (err) => {
    Promise.reject(err)
  }
)

export default request
